template <typename T> class Stack
{
public:
    Stack();
    ~Stack();
    Stack(const Stack&);
    Stack& operator=(const Stack&);
private:
    T* v_;
    size_t vsize_;
    size_t vused_;
};
template<class T>
Stack<T>::Stack()
    :v_(new T[10]),vsize_(10),vused_(0)
{
}
template<typename T>
Stack<T>::~Stack()
{
    delete[] v_;
}

